/* fsl_uart.h */
#ifndef __FSL_UART_H__
#define __FSL_UART_H__

#include <stdint.h>
#include <stdbool.h>

#include "fsl_device_registers.h"

typedef struct
{
    uint32_t BusClkHz; /* Frequency of module's clock source. */
    uint32_t Baudrate; /* UART bus communicating baudrate. */
} UART_Config_T;

void UART_ConfigTransfer(UART_Type *devPtr, const UART_Config_T *configPtr);
void UART_SetIntEnabledOnTxBufferEmpty(UART_Type *devPtr, bool enInt);
void UART_SetIntEnabledOnRxBufferFull(UART_Type *devPtr, bool enInt);

void UART_PutTxData(UART_Type *devPtr, uint8_t txData);
bool UART_IsTxBufferEmpty(UART_Type *devPtr);
void UART_PutTxDataBlocking(UART_Type *devPtr, uint8_t txData);

uint8_t UART_GetRxData(UART_Type *devPtr);
bool UART_IsRxBufferFull(UART_Type *devPtr);
uint8_t UART_GetRxDataBlocking(UART_Type *devPtr);

void UART_SetTxDMAMode(UART_Type *devPtr, bool val);

#endif /* __FSL_UART_H__ */
